package com.partner.boot.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import java.util.List;

@Data
/*封装一个分页对象*/
public class Pagination<T> {
    private int maxPage;//最大页
    private int total;//管理员总信息条数
    private List<T> records;// 当前页的记录数集合
    private int  pageSize;//每页显示的记录数
    private int page;//当前页
    @JsonIgnore//在接口不返回该属性
    private int offset;//数据库分页的起始位置

    /*分页初始化:完成分页中相关数据的计算
      page：当前页，pageSize：每页的最大记录数，totalRecords：总共的记录数*/
    public Pagination(Integer page, Integer pageSize, int total){
        //对参数的验证
        if(page==null){
            page=1;//若不传page参数，默认从第一页开始显示
        }

        if(pageSize==null){
            pageSize=10;//若不传pageSize参数，默认每页显示10条记录
        }
        //计算出允许的最大页
        int maxPage=total%pageSize==0?total/pageSize:total/pageSize+1;
        if(page<1){
            page=1;
        }else if(page>maxPage){
            page=maxPage;
        }
        this.setPage(page);
        this.setPageSize(pageSize);
        this.setMaxPage(maxPage);
        this.setTotal(total);
        this.setOffset((page-1)*pageSize);
    }

}
